Portable computing devices have increasingly supplanted stationary computing devices (e.g., so-called “desktop” computers) for both personal and business-related uses. The manner in which portable computing devices such as handheld or tablet computing devices are used has therefore increasingly taken on the multiple role and multiple user nature that has been commonplace for some time with stationary computing devices.
As a result, there has been increasing impetus to bring such features as virtualization, which is often used in stationary computing devices, to portable computing devices to maintain separate user environments, enforce parental control, and/or provide a degree of security as multiple applications are executed concurrently. Many of the approaches to providing virtualization taken in stationary computing devices entail greater utilization of processor and/or storage resources than can often be accommodated in portable devices. As familiar to those skilled in the art, the designs of portable devices typically represent a tradeoff between the competing requirements of processing and storage resources, smaller physical size and weight, reduced power consumption, etc. Thus, significant increases in processor and/or storage resources are often prohibitively difficult to accommodate.
Other approaches to virtualization have been devised that do not entail as great a utilization of processor and/or storage resources such that they may be more appropriate for portable computing devices, but these other approaches invariably require extensive modifications to device drivers and other hardware-specific routines to support the numerous input/output features often incorporated into portable computing devices. As familiar to those skilled in the art, device drivers and other routines that engage in more direct interaction with hardware components require greater skill to write and modify than other routines. Further, the code of device drivers and other such hardware-centric routines usually cannot be reused or “ported” between different models of portable computing devices, as it is quite common for different models even with a common product line to implement input/output features with different hardware components.